package com.xxx.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 方法耗时统计注解
 * 被注解的方法会自动统计执行耗时并打印日志
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TimeCost {
    /**
     * 时间单位，默认为毫秒
     */
    TimeUnit unit() default TimeUnit.MILLISECONDS;

    /**
     * 是否打印方法参数，默认不打印
     */
    boolean printArgs() default false;

    /**
     * 自定义方法描述
     */
    String description() default "";

    /**
     * 时间单位枚举
     */
    enum TimeUnit {
        NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS
    }
}